package com.hn658.base.message.account.service;

import java.util.Date;
import java.util.List;
import java.util.Map;

import org.omg.CORBA.UserException;

import com.hn658.base.message.account.entity.AccountUserInfoEO;
import com.hn658.framework.dataaccess.pagination.GenericPage;

public interface IAccountUserManagerService{
	/**
	 * 查询用户列表
	 * @return
	 */
	public List<AccountUserInfoEO> findUserList();
	
	/**
	 * 添加用户
	 * @param userInfoEO
	 * @return
	 */
	public void addUser(AccountUserInfoEO userInfoEO);
	
	/**
	 * 更新用户
	 * @param userInfoEO
	 */
	public void updateAccount(AccountUserInfoEO userInfoEO);
	
	/**
	 * 用户禁用
	 * @param id
	 * @return
	 * @throws UserException
	 */
	public AccountUserInfoEO disableUser(Long id);
	
	/**
	 * 用户启用
	 * @param id
	 * @return
	 */
	public AccountUserInfoEO enableUser(Long id);
	
	/**
	 * 查询所有符合条件的语句
	 * @param map
	 * @param limit
	 * @param start
	 * @param sortBy
	 * @param isAsc
	 * @return
	 */
	public GenericPage<AccountUserInfoEO> findByAccountUser(Map<String, Object> map,int limit, int start, String sortBy, boolean isAsc);
	
	/**
	 * 根据用户id和appId查找用户信息
	 * @param appUid
	 * @return
	 */
	public AccountUserInfoEO findAccountByAppIdUid(String appKey, String userId);
	
	/**
	 * 
	 * <p>获得应用对应的用户令牌信息</p> 
	 * @author ztjie
	 * @date 2015-11-3 下午12:43:02
	 * @param appKey
	 * @param userId
	 * @param name
	 * @param portraitUri
	 * @return
	 * @see
	 */
	public String createToken(String appKey, String userId, String name,String portraitUri);

	/**
	 * 通过应用ID及用户ID，查询用户登录令牌
	 * @param appKey
	 * @param userId
	 * @return
	 */
	public String findUserToken(String appKey, String userId);
	
	/**
	 * 查询对应条件下的所有用户id
	 * @param querMap
	 * @return
	 */
	public List<String> findAccountId(String appKey);
	
	/**
	 * 根据id列表获取对应用户列表
	 * @param ids
	 * @return
	 */
	public List<AccountUserInfoEO> queryAccountListByUid(String appKey,List<String> ids);
	/**
	 * 根据最后更新时间获取用户列表
	 * @param time
	 * @return
	 */
	public List<AccountUserInfoEO> queryAccountListByLastTime(String appKey,Date time);
}
